package io.linfeng.common.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.common.collect.Lists;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 属性转换-工具类
 * @author XuYuLong
 * @createTime 2021-09-07
 */
public class PojoInfoUtil {

    /**
     * ListDTO转换
     * @author XuYuLong
     * @createTime 2021-09-07
     * @param  listInfo    listInfo<E>类对象
     * @param  dtoClass     DTO类的class对象
     * @param  <E>          entity类
     * @param  <D>          DTO类
     * @return List<D>      转换对象
     */
    public static <E, D> List<D> listInfo2DTO(List<E> listInfo, Class<D> dtoClass) {
        if (CollectionUtils.isEmpty(listInfo)) {
            return Lists.newArrayList();
        }
        // 创建list对象
        List<D> list = new ArrayList<>();
        // 遍历原entity的列表
        for (E e : listInfo) {
            try {
                // 通过class对象生成DTO的对象
                list.add(JSON.parseObject(JSON.toJSONBytes(e, SerializerFeature.DisableCircularReferenceDetect), dtoClass));
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        return list;
    }

}
